home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- class ImportXMLHandler$CMNode {
- // $FF: synthetic field
- final ImportXMLHandler this$0;
- Hashtable next;
- String name;
- char occurance;
- char connector;
- Vector particles;
-
- ImportXMLHandler$CMNode(ImportXMLHandler var1, String var2) {
- this.this$0 = var1;
- this.next = new Hashtable();
- this.occurance = 0;
- this.connector = ',';
- this.particles = new Vector();
- this.name = var2;
- }
-
- boolean isRoot() {
- return this.name.length() == 0;
- }
-
- ImportXMLHandler$CMNode add(String var1) {
- ImportXMLHandler$CMNode var2 = (ImportXMLHandler$CMNode)this.next.get(var1);
- if (var1.equals(this.name)) {
- this.setMultiple();
- return this;
- } else if (var2 != null) {
- return var2;
- } else {
- ImportXMLHandler$CMNode var3 = new ImportXMLHandler$CMNode(this.this$0, var1);
- this.next.put(var1, var3);
- return var3;
- }
- }
-
- void setMultiple() {
- if (this.occurance == 0) {
- this.occurance = '+';
- } else if (this.occurance == '?') {
- this.occurance = '*';
- }
-
- }
-
- void doNodeChoice(ContentModelTerm var1) {
- if (!var1.contains(this.name)) {
- var1.addTerm(new ContentModelTerm(new TypeRef(this.name), '\u0000', '|'));
- }
-
- Enumeration var2 = this.next.elements();
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var2.nextElement();
- var3.doNodeChoice(var1);
- }
-
- }
-
- void mergeNexts(ImportXMLHandler$CMNode var1) {
- Enumeration var2 = var1.next.elements();
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var2.nextElement();
- this.merge(var3);
- }
-
- }
-
- void merge(ImportXMLHandler$CMNode var1) {
- Enumeration var2 = this.next.elements();
- boolean var3 = false;
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var4 = (ImportXMLHandler$CMNode)var2.nextElement();
- if (var4.equals(var1)) {
- var4.mergeNexts(var1);
- var3 = true;
- break;
- }
- }
-
- if (!var3) {
- this.next.put(var1.name, var1);
- }
-
- }
-
- ImportXMLHandler$CMNode firstNext() {
- return this.next.size() < 1 ? null : (ImportXMLHandler$CMNode)this.next.elements().nextElement();
- }
-
- boolean equals(ImportXMLHandler$CMNode var1) {
- return var1 != null && this.name.equals(var1.name);
- }
-
- ImportXMLHandler$CMNode mergeUsingOptional() {
- if (this.next.size() != 2) {
- return null;
- } else {
- Enumeration var1 = this.next.elements();
- ImportXMLHandler$CMNode var2 = (ImportXMLHandler$CMNode)var1.nextElement();
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var1.nextElement();
- if (var2.next.size() == 1 && var2.firstNext().equals(var3)) {
- var2.firstNext().mergeNexts(var3);
- var2.occurance = '?';
- return var2;
- } else if (var3.next.size() == 1 && var3.firstNext().equals(var2)) {
- var3.firstNext().mergeNexts(var2);
- var3.occurance = '?';
- return var3;
- } else {
- return null;
- }
- }
- }
-
- ImportXMLHandler$CMNode extractCommonLeaves() {
- ImportXMLHandler$CMNode var1;
- ImportXMLHandler$CMNode var2;
- for(var1 = null; !this.next.isEmpty(); var1 = var2) {
- var2 = this.getFirstLeaf();
- if (!this.leavesAreAll(var2)) {
- break;
- }
-
- this.extractLeaf(var2);
- if (var1 != null) {
- var2.next.put(var1.name, var1);
- }
- }
-
- return var1;
- }
-
- void extractLeaf(ImportXMLHandler$CMNode var1) {
- if (var1.equals(this.firstNext())) {
- this.next.remove(var1.name);
- } else {
- Enumeration var2 = this.next.elements();
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var2.nextElement();
- var3.extractLeaf(var1);
- }
- }
-
- }
-
- ImportXMLHandler$CMNode getFirstLeaf() {
- return this.next.isEmpty() ? this : this.firstNext().getFirstLeaf();
- }
-
- boolean leavesAreAll(ImportXMLHandler$CMNode var1) {
- if (this.next.isEmpty()) {
- return this.equals(var1);
- } else {
- Enumeration var2 = this.next.elements();
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var2.nextElement();
- boolean var4 = var3.leavesAreAll(var1);
- if (!var4) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- void doNodeSeq(ContentModelTerm var1) {
- ImportXMLHandler$CMNode var2 = null;
- ImportXMLHandler$CMNode var3 = null;
- if (!this.isRoot()) {
- var1.addTerm(new ContentModelTerm(new TypeRef(this.name), this.occurance, ','));
- }
-
- if (this.next.size() == 1) {
- this.firstNext().doNodeSeq(var1);
- } else {
- var2 = this.mergeUsingOptional();
- if (var2 != null) {
- var2.doNodeSeq(var1);
- }
- }
-
- if (var2 == null && this.next.size() > 1) {
- var3 = this.extractCommonLeaves();
- ContentModelTerm var4 = new ContentModelTerm('*', ',');
- Enumeration var5 = this.next.elements();
-
- while(var5.hasMoreElements()) {
- ImportXMLHandler$CMNode var6 = (ImportXMLHandler$CMNode)var5.nextElement();
- var6.doNodeChoice(var4);
- }
-
- var1.addTerm(var4);
- if (var3 != null) {
- var3.doNodeSeq(var1);
- }
- }
-
- }
-
- void doNodeAsMixed(ContentModelTerm var1) {
- if (!this.isRoot() && !var1.contains(this.name)) {
- var1.addTerm(new ContentModelTerm(new TypeRef(this.name), this.occurance, '|'));
- }
-
- Enumeration var2 = this.next.elements();
-
- while(var2.hasMoreElements()) {
- ImportXMLHandler$CMNode var3 = (ImportXMLHandler$CMNode)var2.nextElement();
- var3.doNodeChoice(var1);
- }
-
- }
- }
-